package com.wkk.yuli.api;

import java.util.Map;

/**
 * @author : WangKeKe
 * @date : 2020/9/24 13:45
 * Description : 对外暴露API接口
 */
public interface YuTemplate {
    /**
     * 在本地缓存中加入永久有效的键值对
     *
     * @param key   键
     * @param value 值
     */
    void setObject(Object key, Object value);

    /**
     * 在本地缓存中加入有生命周期的键
     *
     * @param key     键
     * @param value   值
     * @param seconds 过期时间(单位s)
     */
    void setObject(Object key, Object value, Integer seconds);

    /**
     * 不存在则添加 - 存在则不添加
     */
    void setObjectNotExist(Object key, Object value, Integer seconds);

    /**
     * 判断是否存在键所对应的值
     *
     * @param key 键
     * @return 存在true 不存在false
     */
    Boolean hasObject(Object key);

    /**
     * 获取key所对应的值
     *
     * @param key 键
     * @return 值
     */
    Object getObject(Object key);

    /**
     * 移除key和其对应的值
     *
     * @param key 键
     */
    void removeObject(Object key);

    /**
     * 清空所有键值对
     */
    void clearAll();

    /**
     * 获取容器内键值对的数量
     *
     * @return 数量
     */
    Integer getSize();

    /**
     * 获取所有的键值对信息
     *
     * @return 键值对信息
     */
    Map<Object, Object> getAllKeyValue();

}
